home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #2
/
Monster Media No. 2 (Monster Media)(1994).ISO
/
pcboard
/
bcmx120.zip
/
NUV.PPE
(
.txt
)
< prev
next >
Wrap
PCBoard Programming Language Executable
|
1994-07-11
|
26KB
|
1,646 lines
;------------------------------------------------------------------------------
; .ss.
; `²²'
; .,sS$Ss,,s$ .,sS$$$Ss. .,sS$Ss,,s$ .ss. .sSs.
; .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
; $$$' .$$$' $$$²Sçsµ²' .$$$' .$$$'.$$$' .$$$' `$$b.
; $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$' ;$$$
; `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
; .sS²°$$$²²°"' d²°'
; .$$² .$$'
; $$$.,d$$'
; `²S$$S²'
;------------------------------------------------------------------------------
; P.P.L.X. 2.OO (C)1996 - Lone Runner / AEGiS CoRP'96
;------------------------------------------------------------------------------
; PPE 2.OO (plain) - Analysis ON - Postprocessing ON
;------------------------------------------------------------------------------
Boolean BOOLEAN001
Boolean BOOLEAN002
Boolean BOOLEAN003
Boolean BOOLEAN004
Boolean BOOLEAN005
Boolean BOOLEAN006
Boolean BOOLEAN007
Boolean BOOLEAN008
Boolean BOOLEAN009
Boolean BOOLEAN010
Boolean BOOLEAN011
Boolean BOOLEAN012
Boolean BOOLEAN013
Boolean BOOLEAN014
Boolean BOOLEAN015
Boolean BOOLEAN016
Boolean BOOLEAN017
Integer TINTEGER002(7)
Integer TINTEGER003(7)
Integer INTEGER004
Integer INTEGER005
Integer INTEGER006
Integer INTEGER007
Integer INTEGER008
Integer INTEGER009
Integer INTEGER010
Integer INTEGER011
Integer INTEGER012
Integer INTEGER013
Integer INTEGER014
Integer INTEGER015
Integer INTEGER016
Integer INTEGER017
Integer INTEGER018
Integer INTEGER019
Integer INTEGER020
Integer INTEGER021
Integer INTEGER022
Integer INTEGER023
Integer INTEGER024
Integer INTEGER025
Integer INTEGER026
Integer INTEGER027
Integer INTEGER028
Integer INTEGER029
Integer INTEGER030
Integer INTEGER031
Integer INTEGER032
Integer INTEGER033
Integer INTEGER034
Integer INTEGER035
Integer INTEGER036
Integer INTEGER037
Integer INTEGER038
Integer INTEGER039
Integer INTEGER040
Integer INTEGER041
Integer INTEGER042
Integer INTEGER043
Integer INTEGER044
Integer INTEGER045
Integer INTEGER046
Integer INTEGER047
Integer INTEGER048
Integer INTEGER049
Integer INTEGER050
Integer INTEGER051
Integer INTEGER052
Integer INTEGER053
Integer INTEGER054
Integer INTEGER055
Integer INTEGER056
Integer INTEGER057
Integer INTEGER058
Integer INTEGER059
Integer INTEGER060
Integer INTEGER061
Integer INTEGER062
Integer INTEGER063
Integer INTEGER064
Integer INTEGER065
String TSTRING001(7)
String STRING002
String STRING003
String STRING004
String STRING005
String STRING006
String STRING007
String TSTRING008(1)
String TSTRING009(7)
String STRING010
String STRING011
String STRING012
String STRING013
String STRING014
String STRING015
String STRING016
String STRING017
String STRING018
String STRING019
String STRING020
String STRING021
String STRING022
String STRING023
String STRING024
String STRING025
String STRING026
String STRING027
String STRING028
String STRING029
String STRING030
String STRING031
String STRING032
String STRING033
String STRING034
String STRING035
String STRING036
String STRING037
String STRING038
String STRING039
String STRING040
String STRING041
String STRING042
String STRING043
String STRING044
String STRING045
String STRING046
String STRING047
String STRING048
String STRING049
String STRING050
String STRING051
String STRING052
String STRING053
String STRING054
String STRING055
String STRING056
String STRING057
String STRING058
;------------------------------------------------------------------------------
INTEGER005 = 7
If (TokCount() <> 0) Then
STRING010 = GetToken()
Endif
BOOLEAN006 = 1
BOOLEAN007 = 0
STRING043 = Lower(YesChar()) + Upper(YesChar()) + Lower(NoChar()) + Upper(NoChar()) + "Aa"
BOOLEAN015 = 0
BOOLEAN002 = 0
STRING011 = PPEPath() + "\graph\nuvtext"
If (LangExt() <> "") Then
If (BOOLEAN002) Then
PrintLn "Langext = " + LangExt()
Wait
Endif
If (Exist(STRING011 + LangExt())) STRING011 = STRING011 + LangExt()
Endif
STRING026 = PPEPath() + "\work\mxlog." + String(PcbNode())
STRING027 = PPEPath() + "\work\nuvtmp." + String(PcbNode())
STRING012 = PPEPath() + "nuv.cfg"
STRING042 = PPEPath() + "infoform.cfg"
Tokenize ReadLine(STRING042, 1)
INTEGER038 = GetToken()
STRING035 = PPEPath() + "apps\waiting.nuv"
STRING036 = PPEPath() + "apps\waiting.cnt"
Tokenize ReadLine(STRING012, 1)
If (GetToken() == "YES") Then
BOOLEAN009 = 1
Else
BOOLEAN009 = 0
Endif
If (GetToken() == "YES") Then
BOOLEAN011 = 1
Else
BOOLEAN011 = 0
Endif
If (GetToken() == "YES") Then
BOOLEAN010 = 1
Else
BOOLEAN010 = 0
Endif
If (GetToken() == "YES") Then
BOOLEAN012 = 1
Else
BOOLEAN012 = 0
Endif
If (Upper(ReadLine(STRING012, 2)) == "YES") Then
BOOLEAN013 = 1
Else
BOOLEAN013 = 0
Endif
If (Upper(ReadLine(STRING012, 3)) == "YES") Then
BOOLEAN008 = 1
Else
BOOLEAN008 = 0
Endif
If (LoggedOn()) Then
GetUser
STRING016 = U_Name()
If (BOOLEAN013) Log "Nuv started for user (" + Upper(STRING016) + ") at " + String(Time()) , 0
Else
If (BOOLEAN013) Log "User not logged on, could not execute nuv", 0
PrintLn "ERROR You're not logged on and therefore cannot use the nuv ppe"
End
Endif
BOOLEAN016 = 0
BOOLEAN017 = 0
INTEGER035 = ReadLine(STRING012, 4)
INTEGER036 = ReadLine(STRING012, 5)
INTEGER060 = ReadLine(STRING012, 6)
INTEGER013 = ReadLine(PCBDat(), 149)
INTEGER014 = ReadLine(STRING012, 7)
INTEGER037 = ReadLine(STRING012, 8)
PrintLn ReadLine(STRING011, 8)
If (U_Sec == INTEGER013) Then
If (BOOLEAN013) Log "Security equals new user security (" + String(INTEGER013) + "), adding for validation", 0
Gosub LABEL050
STRING039 = PPEPath() + "apps\" + Replace(Left(U_Name(), 8), " ", "_")
STRING039 = Replace(STRING039, "=", "-")
STRING039 = Replace(STRING039, ",", "-")
STRING039 = Replace(STRING039, ".", "-") + ".vot"
If (Exist(STRING035)) Then
BOOLEAN003 = 0
INTEGER026 = 1
STRING022 = ReadLine(STRING035, INTEGER026)
While (STRING022 <> "") Do
If (Upper(STRING022) == Upper(STRING016)) Then
BOOLEAN003 = 1
Break
Endif
Inc INTEGER026
Inc INTEGER026
STRING022 = ReadLine(STRING035, INTEGER026)
EndWhile
If (BOOLEAN003) Goto LABEL002
FClose -1
FAppend 1, STRING035, 1, 3
FPutLn 1, STRING016
FPutLn 1, U_City
FClose 1
INTEGER041 = ReadLine(STRING036, 1)
Inc INTEGER041
FClose -1
FCreate 1, STRING036, 1, 3
FPutLn 1, String(INTEGER041)
FClose 1
If (Exist(STRING039)) Goto LABEL001
FCreate 1, STRING039, 1, 3
FPutLn 1, "00000"
FPutLn 1, "00000"
FClose 1
:LABEL001
Goto LABEL003
:LABEL002
If (Exist(STRING039)) Then
INTEGER061 = ReadLine(STRING039, 1)
INTEGER062 = ReadLine(STRING039, 2)
Endif
STRING039 = PPEPath() + "graph\nuvstat"
INTEGER063 = 1
FreshLine
STRING033 = ReadLine(STRING039, INTEGER063)
If (INTEGER036 == 0) Then
STRING049 = ReadLine(STRING011, 26)
Else
STRING049 = String(INTEGER036)
Endif
If (INTEGER035 == 0) Then
STRING048 = ReadLine(STRING011, 26)
Else
STRING048 = String(INTEGER035)
Endif
While (STRING033 <> "") Do
STRING033 = ReplaceStr(STRING033, "%YES%", String(INTEGER061))
STRING033 = ReplaceStr(STRING033, "%NO%", String(INTEGER062))
STRING033 = ReplaceStr(STRING033, "%NON%", STRING049)
STRING033 = ReplaceStr(STRING033, "%YESN%", STRING048)
PrintLn STRING033
Inc INTEGER063
STRING033 = ReadLine(STRING039, INTEGER063)
EndWhile
Wait
If (BOOLEAN008) Then
Hangup
Else
End
Endif
:LABEL003
Else
FClose -1
FCreate 1, STRING035, 1, 3
FPutLn 1, STRING016
FPutLn 1, U_City
FClose 1
FCreate 1, STRING036, 1, 3
FPutLn 1, "1"
FClose 1
If (Exist(STRING039)) Goto LABEL004
FCreate 1, STRING039, 1, 3
FPutLn 1, "00000"
FPutLn 1, "00000"
FClose 1
Endif
:LABEL004
If (BOOLEAN008) Then
If (BOOLEAN013) Log "Nuv hanging up on new user", 0
DispFile PPEPath() + "graph\nuvdisc", 1 + 4
Wait
Hangup
Else
End
Endif
Else
If (U_Sec > INTEGER013) Then
If (U_Sec < INTEGER037) Then
If (BOOLEAN013) Log "Security too low for NUV, exiting", 0
End
Endif
If (!Exist(STRING035) || !Exist(STRING036)) Then
If (BOOLEAN013) Log "Nobody waiting for validation, exiting nuv", 0
End
Endif
If (STRING010 == "/NEWONLY") Then
End
Endif
Else
If (U_Sec < INTEGER013) Then
FreshLine
If (BOOLEAN012) Goto LABEL005
If (BOOLEAN013) Log "low security user (" + Upper(String(U_Sec)) + ") not hanging up", 0
End
:LABEL005
If (BOOLEAN013) Log "low security user (" + Upper(String(U_Sec)) + ") hanging up", 0
DispFile PPEPath() + "graph\nuvout", 1 + 4
Wait
Hangup
Endif
Endif
Endif
INTEGER020 = 1
STRING023 = Chr(13)
STRING024 = Chr(27)
STRING025 = Chr(7)
If (AnsiOn()) Goto LABEL006
If (BOOLEAN013) Log "No ansi, exiting nuv", 0
Newline
PrintLn "No ansi capabilities, exiting nuv"
End
:LABEL006
STRING050 = PPEPath() + "cfg\nuvmenus.cfg"
Tokenize ReadLine(STRING050, 1)
STRING052 = GetToken()
INTEGER033 = GetToken()
INTEGER020 = 1
:LABEL007
StartDisp 1
INTEGER041 = ReadLine(STRING036, 1)
If (INTEGER041 == 0) Then
DefColor
End
Endif
If (INTEGER020 > INTEGER041) Then
If (INTEGER040 - INTEGER033 >= 1) Then
INTEGER020 = INTEGER040 - INTEGER033
Goto LABEL008
Endif
INTEGER020 = 1
Endif
:LABEL008
FClose -1
If (BOOLEAN006) Then
FreshLine
INTEGER007 = 1
For INTEGER022 = 1 To INTEGER041
STRING020 = ReadLine(STRING035, INTEGER007)
STRING039 = PPEPath() + "apps\" + Replace(Left(STRING020, 8), " ", "_")
STRING039 = Replace(STRING039, "=", "-")
STRING039 = Replace(STRING039, ",", "-")
STRING039 = Replace(STRING039, ".", "-") + ".vot"
If (Exist(STRING039)) Then
INTEGER027 = 3
BOOLEAN003 = 0
While (1) Do
STRING029 = ReadLine(STRING039, INTEGER027)
If (STRING029 == "") Break
If (Upper(STRING029) == Upper(STRING016)) Then
BOOLEAN003 = 1
Break
Endif
INTEGER027 = INTEGER027 + 2
EndWhile
If (BOOLEAN003) Goto LABEL009
Inc INTEGER006
BOOLEAN007 = 1
:LABEL009
Goto LABEL010
Endif
Inc INTEGER006
BOOLEAN007 = 1
:LABEL010
Inc INTEGER007
Inc INTEGER007
Next
If (STRING010 == "/FORCE") Then
If (BOOLEAN013) Log "/FORCE used, starting nuv", 0
Goto LABEL012
Endif
If (BOOLEAN007) Goto LABEL011
PrintLn ReadLine(STRING011, 23)
If (BOOLEAN013) Log "No voting left for user, exiting nuv", 0
End
Goto LABEL012
:LABEL011
If (!BOOLEAN009 && BOOLEAN011) Then
PrintLn ReadLine(STRING011, 22)
DispFile PPEPath() + "graph\nuvvot", 1 + 4
STRING015 = YesChar()
InputYN ReadLine(STRING011, 13), STRING015, 1
If ((STRING015 == "") || (Upper(STRING015) == Upper(NoChar()))) Then
If (BOOLEAN013) Log "User elected not to vote, exiting nuv", 0
End
Endif
Goto LABEL012
Endif
PrintLn ReadLine(STRING011, 22)
Delay 10
:LABEL012
BOOLEAN006 = 0
Endif
FClose -1
INTEGER021 = INTEGER041
STRING053 = Random(Time())
STRING053 = Random(STRING052 - 1) + 1
Tokenize ReadLine(STRING050, STRING053 - 1 + 2)
INTEGER058 = GetToken()
INTEGER059 = GetToken()
INTEGER015 = GetToken()
INTEGER016 = GetToken()
INTEGER019 = GetToken()
INTEGER042 = GetToken()
INTEGER008 = GetToken()
STRING037 = GetToken()
STRING034 = GetToken()
STRING051 = PPEPath() + "mnutxt\nuvmnu"
If (Exist(STRING051 + String(STRING053) + LangExt())) Then
STRING051 = PPEPath() + "mnutxt\nuvmnu" + String(STRING053) + LangExt()
ElseIf (Exist(STRING051 + String(STRING053))) Then
STRING051 = PPEPath() + "mnutxt\nuvmnu" + String(STRING053)
Else
PrintLn "ERROR nuvmnu file not found"
End
Endif
STRING017 = ReadLine(STRING051, 1)
STRING031 = ReadLine(STRING051, 2)
STRING040 = ReadLine(STRING051, 3)
STRING004 = ReadLine(STRING051, 4)
STRING005 = ReadLine(STRING051, 5)
STRING006 = ReadLine(STRING051, 6)
INTEGER046 = Len(StripAtx(STRING017)) - 4
:LABEL013
INTEGER017 = INTEGER015
INTEGER018 = INTEGER016
If (BOOLEAN015) Goto LABEL014
DefColor
Cls
DispFile PPEPath() + "graph\nuv" + String(STRING053), 1 + 4
:LABEL014
Color DefColor()
If (INTEGER033 >= INTEGER041) Then
INTEGER033 = INTEGER041
Endif
If (INTEGER020 + INTEGER033 <= INTEGER021) INTEGER034 = INTEGER020 + INTEGER033 - 1
If (INTEGER020 + INTEGER033 > INTEGER021) INTEGER034 = INTEGER021
INTEGER040 = INTEGER020
INTEGER039 = INTEGER034
Color DefColor()
INTEGER023 = INTEGER020 % INTEGER033
INTEGER007 = (INTEGER020 - 1) * 2 + 1
For INTEGER022 = INTEGER020 To INTEGER034
If (INTEGER023 == 0) INTEGER023 = INTEGER033
AnsiPos INTEGER017 - INTEGER046, INTEGER018 + INTEGER023 - 1
STRING020 = ReadLine(STRING035, INTEGER007)
STRING014 = Chr(Asc("a") + INTEGER023 - 1)
STRING007 = ReadLine(STRING035, INTEGER007 + 1)
Print ReplaceStr(STRING017, "%SEP%", Upper(STRING014)), STRING037, Mixed(Left(STRING020, INTEGER042))
STRING039 = PPEPath() + "apps\" + Replace(Left(STRING020, 8), " ", "_")
STRING039 = Replace(STRING039, "=", "-")
STRING039 = Replace(STRING039, ",", "-")
STRING039 = Replace(STRING039, ".", "-") + ".vot"
If (Exist(STRING039)) Then
INTEGER043 = ReadLine(STRING039, 1)
INTEGER044 = ReadLine(STRING039, 2)
INTEGER027 = 0
BOOLEAN005 = 0
While (1) Do
STRING029 = ReadLine(STRING039, INTEGER027 + 3)
If (STRING029 == "") Break
If (Upper(STRING029) == Upper(STRING016)) Then
STRING029 = ReadLine(STRING039, INTEGER027 + 4)
If (STRING029 == "ABS") Then
STRING029 = STRING004
Goto LABEL015
Endif
If (STRING029 == "YES") Then
STRING029 = STRING005
Goto LABEL015
Endif
STRING029 = STRING006
:LABEL015
BOOLEAN005 = 1
Print ReplaceStr(ReplaceStr(ReplaceStr(ReplaceStr(STRING031, "%YES%", Left(String(INTEGER043), 3)), "%NO%", Left(String(INTEGER044), 3)), "%YOUR%", String(STRING029)), "%C%", Mixed(Left(STRING007, INTEGER008)))
Break
Endif
Inc INTEGER027
Inc INTEGER027
EndWhile
If (BOOLEAN005) Goto LABEL016
Print ReplaceStr(ReplaceStr(ReplaceStr(ReplaceStr(STRING031, "%YES%", Left(String(INTEGER043), 3)), "%NO%", Left(String(INTEGER044), 3)), "%YOUR%", String(STRING040)), "%C%", Mixed(Left(STRING007, INTEGER008)))
:LABEL016
Else
Print ReplaceStr(ReplaceStr(ReplaceStr(ReplaceStr(STRING031, "%YES%", Left(String(0), 3)), "%NO%", Left(String(0), 3)), "%YOUR%", String(STRING040)), "%C%", Mixed(Left(STRING007, INTEGER008)))
Endif
Inc INTEGER023
Inc INTEGER007
Inc INTEGER007
Next
If (INTEGER020 + INTEGER033 > INTEGER021) Then
INTEGER022 = INTEGER020 + INTEGER033 - INTEGER021
INTEGER010 = GetY()
For INTEGER023 = 1 To INTEGER022 - 1
AnsiPos INTEGER017 - INTEGER046, INTEGER010 + INTEGER023
Print Space(INTEGER019)
Next
Endif
Newline
BOOLEAN015 = 0
AnsiPos INTEGER017, INTEGER018
INTEGER009 = (INTEGER020 - 1) * 2 + 1
Print STRING034, Mixed(Left(StripAtx(ReadLine(STRING035, INTEGER009)), INTEGER042))
FClose -1
:LABEL017
STRING015 = Inkey()
If (((Upper(STRING015) == ",") || (STRING015 == "UP")) || (STRING015 == "LEFT")) Then
INTEGER023 = INTEGER020 % INTEGER033
If (INTEGER023 == 0) INTEGER023 = INTEGER033
AnsiPos INTEGER017, INTEGER018 + INTEGER023 - 1
Print STRING037 + Mixed(Left(ReadLine(STRING035, INTEGER009), INTEGER042))
If (INTEGER020 % INTEGER033 == 1) Then
INTEGER020 = INTEGER020 + INTEGER033 - 1
If (INTEGER020 > INTEGER021) INTEGER020 = INTEGER021
Else
INTEGER020 = INTEGER020 - 1 % INTEGER033
Endif
INTEGER009 = (INTEGER020 - 1) * 2 + 1
INTEGER023 = INTEGER020 % INTEGER033
If (INTEGER023 == 0) INTEGER023 = INTEGER033
AnsiPos INTEGER017, INTEGER018 + INTEGER023 - 1
Print STRING034, Mixed(Left(StripAtx(ReadLine(STRING035, INTEGER009)), INTEGER042))
FClose -1
Goto LABEL017
ElseIf (((Upper(STRING015) == ".") || (STRING015 == "DOWN")) || (STRING015 == "RIGHT")) Then
INTEGER023 = INTEGER020 % INTEGER033
If (INTEGER023 == 0) INTEGER023 = INTEGER033
AnsiPos INTEGER017, INTEGER018 + INTEGER023 - 1
Print STRING037 + Mixed(Left(ReadLine(STRING035, INTEGER009), INTEGER042))
If (INTEGER020 % INTEGER033 == 0) Then
INTEGER020 = INTEGER020 - INTEGER033 - 1
ElseIf (INTEGER020 == INTEGER021) Then
INTEGER020 = INTEGER040
Else
INTEGER020 = INTEGER020 + 1
Endif
INTEGER009 = (INTEGER020 - 1) * 2 + 1
INTEGER023 = INTEGER020 % INTEGER033
If (INTEGER023 == 0) INTEGER023 = INTEGER033
AnsiPos INTEGER017, INTEGER018 + INTEGER023 - 1
Print STRING034, Mixed(Left(StripAtx(ReadLine(STRING035, INTEGER009)), INTEGER042))
FClose -1
Goto LABEL017
Else
Select Case (STRING015)
Case STRING023
INTEGER022 = INTEGER020
Gosub LABEL019
INTEGER020 = INTEGER040
Goto LABEL007
Case "HOME"
INTEGER023 = INTEGER020 % INTEGER033
If (INTEGER023 == 0) INTEGER023 = INTEGER033
AnsiPos INTEGER017, INTEGER018 + INTEGER023 - 1
Print STRING037 + Mixed(Left(ReadLine(STRING035, INTEGER009), INTEGER042))
INTEGER020 = INTEGER040
INTEGER023 = INTEGER020 % INTEGER033
If (INTEGER023 == 0) INTEGER023 = INTEGER033
AnsiPos INTEGER017, INTEGER018 + INTEGER023 - 1
INTEGER009 = (INTEGER020 - 1) * 2 + 1
Print STRING034, Mixed(Left(StripAtx(ReadLine(STRING035, INTEGER009)), INTEGER042))
FClose -1
Goto LABEL017
Case "END"
INTEGER023 = INTEGER020 % INTEGER033
If (INTEGER023 == 0) INTEGER023 = INTEGER033
AnsiPos INTEGER017, INTEGER018 + INTEGER023 - 1
Print STRING037 + Mixed(Left(ReadLine(STRING035, INTEGER009), INTEGER042))
INTEGER020 = INTEGER039
INTEGER023 = INTEGER020 % INTEGER033
If (INTEGER023 == 0) INTEGER023 = INTEGER033
AnsiPos INTEGER017, INTEGER018 + INTEGER023 - 1
INTEGER009 = (INTEGER020 - 1) * 2 + 1
Print STRING034, Mixed(Left(StripAtx(ReadLine(STRING035, INTEGER009)), INTEGER042))
FClose -1
Goto LABEL017
Case ">", "CTRL PGDN"
If (INTEGER039 + INTEGER033 <= INTEGER021) Then
INTEGER020 = INTEGER039 + 1
BOOLEAN015 = 1
Goto LABEL013
Else
If (INTEGER039 <> INTEGER021) Then
INTEGER020 = INTEGER039 + 1
BOOLEAN015 = 1
Goto LABEL013
Endif
MPrint STRING025
Goto LABEL017
Endif
Case "<", "CTRL PGUP"
If (INTEGER040 - INTEGER033 >= 1) Then
INTEGER020 = INTEGER040 - INTEGER033
BOOLEAN015 = 1
Goto LABEL013
Else
MPrint STRING025
Goto LABEL017
Endif
Case "?"
INTEGER028 = GetX()
INTEGER029 = GetY()
DefColor
AnsiPos 1, 23
SaveScrn
Cls
StartDisp 2
DispFile PPEPath() + "graph\nuvhlp", 1 + 4
Wait
StartDisp 1
RestScrn
AnsiPos INTEGER028, INTEGER029
Goto LABEL017
Case "Q", STRING024
If (BOOLEAN009) Then
If (INTEGER006 > 0) Then
INTEGER028 = GetX()
INTEGER029 = GetY()
AnsiPos INTEGER058, INTEGER059
Print ReadLine(STRING011, 25)
AnsiPos INTEGER028, INTEGER029
Goto LABEL017
Endif
Endif
DefColor
Cls
End
Case ""
If ((Asc(Lower(STRING015)) >= Asc("a")) && (Asc(Lower(STRING015)) <= Asc(STRING014))) Then
INTEGER020 = INTEGER040 + Asc(Lower(STRING015)) - Asc("a")
INTEGER022 = INTEGER020
Gosub LABEL019
INTEGER020 = INTEGER040
Goto LABEL007
Endif
If (BOOLEAN002) If (STRING015 <> "") PrintLn STRING015
Goto LABEL017
Endif
End Select
Goto LABEL017
End
If (LoggedOn()) Goto LABEL018
FPutLn 3, "matrix:" + ""
Return
:LABEL018
Log "", 0
Return
:LABEL019
INTEGER011 = INTEGER022
STRING038 = ReadLine(STRING035, (INTEGER022 - 1) * 2 + 1)
FClose -1
STRING039 = PPEPath() + "apps\" + Replace(Left(STRING038, 8), " ", "_")
STRING039 = Replace(STRING039, "=", "-")
STRING039 = Replace(STRING039, ",", "-")
STRING039 = Replace(STRING039, ".", "-") + ".vot"
If (Exist(STRING039)) Then
INTEGER043 = ReadLine(STRING039, 1)
INTEGER044 = ReadLine(STRING039, 2)
Else
INTEGER043 = 0
INTEGER044 = 0
Endif
If (STRING038 == "") Return
DefColor
Cls
INTEGER048 = STRING052 + 1
INTEGER047 = ReadLine(STRING050, INTEGER048 + 1)
STRING053 = Random(Time())
STRING053 = Random(INTEGER047 - 1) + 1
DispFile PPEPath() + "graph\vote" + String(STRING053), 1 + 4
Tokenize ReadLine(STRING050, INTEGER048 + 1 + STRING053)
INTEGER049 = GetToken()
INTEGER050 = GetToken()
AnsiPos GetToken(), GetToken()
Print GetToken(), Mixed(STRING038)
AnsiPos GetToken(), GetToken()
Print GetToken(), String(INTEGER043)
AnsiPos GetToken(), GetToken()
Print GetToken(), String(INTEGER044)
AnsiPos GetToken(), GetToken()
If (INTEGER035 == 0) Then
Print GetToken(), ReadLine(STRING011, 26)
Else
Print GetToken(), String(INTEGER035)
Endif
AnsiPos GetToken(), GetToken()
If (INTEGER036 == 0) Then
Print GetToken(), ReadLine(STRING011, 26)
Else
Print GetToken(), String(INTEGER036)
Endif
INTEGER053 = GetToken()
INTEGER054 = GetToken()
STRING044 = PPEPath() + "apps\" + Replace(Left(STRING038, 8), " ", "_")
STRING044 = Replace(STRING044, "=", "-")
STRING044 = Replace(STRING044, ",", "-")
STRING044 = Replace(STRING044, ".", "-") + ".cmt"
INTEGER051 = GetToken()
INTEGER052 = GetToken()
Redim TSTRING008, INTEGER052
STRING046 = GetToken()
STRING047 = GetToken()
INTEGER056 = 1
INTEGER057 = 1
For INTEGER022 = 1 To INTEGER052
STRING045 = ReadLine(STRING044, INTEGER022)
If (STRING045 <> "") Then
AnsiPos INTEGER053, INTEGER054 + INTEGER022 - 1
Print STRING045
Inc INTEGER056
Continue
Endif
Break
Next
For INTEGER022 = 1 To INTEGER005
TINTEGER002(INTEGER022) = GetToken()
TINTEGER003(INTEGER022) = GetToken()
TSTRING001(INTEGER022) = ScrText(TINTEGER002(INTEGER022), TINTEGER003(INTEGER022), ToInteger(GetToken()), 1)
TSTRING009(INTEGER022) = Left(StripAtx(TSTRING001(INTEGER022)), 1)
Next
STRING002 = GetToken()
INTEGER004 = 1
AnsiPos TINTEGER002(1), TINTEGER003(1)
Print STRING002, StripAtx(TSTRING001(1))
FClose -1
STRING015 = ""
:LABEL020
STRING015 = Inkey()
If (((Upper(STRING015) == ",") || (STRING015 == "UP")) || (STRING015 == "LEFT")) Then
AnsiPos TINTEGER002(INTEGER004), TINTEGER003(INTEGER004)
Print TSTRING001(INTEGER004)
If (INTEGER004 == 1) Then
INTEGER004 = INTEGER005
Else
Dec INTEGER004
Endif
AnsiPos TINTEGER002(INTEGER004), TINTEGER003(INTEGER004)
Print STRING002, StripAtx(TSTRING001(INTEGER004))
Goto LABEL020
ElseIf (((Upper(STRING015) == ".") || (STRING015 == "DOWN")) || (STRING015 == "RIGHT")) Then
AnsiPos TINTEGER002(INTEGER004), TINTEGER003(INTEGER004)
Print TSTRING001(INTEGER004)
If (INTEGER004 == INTEGER005) Then
INTEGER004 = 1
Else
Inc INTEGER004
Endif
AnsiPos TINTEGER002(INTEGER004), TINTEGER003(INTEGER004)
Print STRING002, StripAtx(TSTRING001(INTEGER004))
Goto LABEL020
Else
Select Case (STRING015)
Case ">"
STRING045 = ReadLine(STRING044, INTEGER057 + INTEGER052)
INTEGER028 = GetX()
INTEGER029 = GetY()
If (STRING045 == "") Then
Gosub LABEL048
AnsiPos INTEGER049, INTEGER050
Print ReadLine(STRING011, 1)
INTEGER055 = GetX()
AnsiPos INTEGER028, INTEGER029
Else
For INTEGER022 = 1 To INTEGER052
DefColor
AnsiPos INTEGER053, INTEGER054 + INTEGER022 - 1
Print Space(INTEGER051)
Next
INTEGER057 = INTEGER057 + INTEGER052
For INTEGER022 = 1 To INTEGER052
STRING045 = ReadLine(STRING044, INTEGER057 + INTEGER022 - 1)
If (STRING045 <> "") Then
AnsiPos INTEGER053, INTEGER054 + INTEGER022 - 1
Print STRING045
Inc INTEGER056
Continue
Endif
Break
Next
AnsiPos INTEGER028, INTEGER029
Endif
Case "<"
INTEGER028 = GetX()
INTEGER029 = GetY()
If (INTEGER057 - INTEGER052 >= 0) Then
INTEGER057 = INTEGER057 - INTEGER052
Else
Gosub LABEL048
AnsiPos INTEGER049, INTEGER050
Print ReadLine(STRING011, 2)
INTEGER055 = GetX()
AnsiPos INTEGER028, INTEGER029
Goto LABEL020
Endif
For INTEGER022 = 1 To INTEGER052
DefColor
AnsiPos INTEGER053, INTEGER054 + INTEGER022 - 1
Print Space(INTEGER051)
Next
Inc INTEGER056
For INTEGER022 = 1 To INTEGER052
STRING045 = ReadLine(STRING044, INTEGER057 + INTEGER022 - 1)
If (STRING045 <> "") Then
AnsiPos INTEGER053, INTEGER054 + INTEGER022 - 1
Print STRING045
Continue
Endif
Break
Next
AnsiPos INTEGER028, INTEGER029
Case "?"
INTEGER028 = GetX()
INTEGER029 = GetY()
DefColor
AnsiPos 1, 23
SaveScrn
Cls
StartDisp 2
DispFile PPEPath() + "graph\nuvhlp", 1 + 4
Wait
StartDisp 1
RestScrn
AnsiPos INTEGER028, INTEGER029
Goto LABEL020
Case ""
If (STRING015 == STRING023) Goto LABEL021
For INTEGER022 = 1 To INTEGER005
If (Upper(TSTRING009(INTEGER022)) == Upper(STRING015)) Then
AnsiPos TINTEGER002(INTEGER004), TINTEGER003(INTEGER004)
Print TSTRING001(INTEGER004)
INTEGER004 = INTEGER022
AnsiPos TINTEGER002(INTEGER004), TINTEGER003(INTEGER004)
Print STRING002, StripAtx(TSTRING001(INTEGER004))
Goto LABEL022
Endif
Next
:LABEL021
Case STRING023
:LABEL022
INTEGER030 = GetX()
INTEGER031 = GetY()
If (INTEGER004 == 1) Then
STRING003 = "YES"
Gosub LABEL025
If (BOOLEAN016) Then
Gosub LABEL048
AnsiPos INTEGER049, INTEGER050
Print ReadLine(STRING011, 3)
Wait
BOOLEAN016 = 0
Return
Endif
Goto LABEL024
Endif
If (INTEGER004 == 2) Then
STRING003 = "NO"
Gosub LABEL025
If (BOOLEAN017) Then
Gosub LABEL048
AnsiPos INTEGER049, INTEGER050
Print ReadLine(STRING011, 4)
Wait
BOOLEAN017 = 0
Return
Endif
Goto LABEL024
Endif
If (INTEGER004 == 3) Then
Return
Goto LABEL024
Endif
If (INTEGER004 == 4) Then
Gosub LABEL032
Goto LABEL024
Endif
If (INTEGER004 == 5) Then
Gosub LABEL038
Goto LABEL024
Endif
If (INTEGER004 == 6) Then
Gosub LABEL043
If (BOOLEAN017) Then
Gosub LABEL048
AnsiPos INTEGER049, INTEGER050
Print ReadLine(STRING011, 4)
Wait
BOOLEAN017 = 0
Return
Goto LABEL023
Endif
If (BOOLEAN016) Then
Gosub LABEL048
AnsiPos INTEGER049, INTEGER050
Print ReadLine(STRING011, 3)
Wait
BOOLEAN016 = 0
Return
Endif
:LABEL023
Goto LABEL024
Endif
If (INTEGER004 == 7) Then
If (BOOLEAN010) Then
STRING003 = "ABS"
Gosub LABEL025
Goto LABEL024
Endif
AnsiPos INTEGER049, INTEGER050
Print ReadLine(STRING011, 24)
INTEGER055 = GetX()
Endif
:LABEL024
AnsiPos INTEGER030, INTEGER031
Endif
End Select
Goto LABEL020
End
:LABEL025
If (BOOLEAN013) Log "User (" + Upper(STRING038) + ") selected for voting", 0
STRING041 = Replace(Left(STRING038, 8), " ", "_")
STRING039 = PPEPath() + "apps\" + Replace(Left(STRING038, 8), " ", "_")
STRING039 = Replace(STRING039, "=", "-")
STRING039 = Replace(STRING039, ",", "-")
STRING039 = Replace(STRING039, ".", "-") + ".vot"
INTEGER043 = 0
INTEGER044 = 0
INTEGER022 = 0
While (1) Do
STRING029 = ReadLine(STRING039, INTEGER022 * 2 + 3)
If (STRING029 == "") Break
STRING030 = STRING029
If (Upper(STRING030) == Upper(STRING016)) Then
STRING030 = Upper(ReadLine(STRING039, INTEGER022 * 2 + 4))
AnsiPos INTEGER049, INTEGER050
If (Upper(STRING030) == "ABS") STRING030 = "Abstain"
Print ReplaceStr(ReadLine(STRING011, 5), "%OPTEXT%", STRING030)
INTEGER055 = GetX()
Return
Endif
Inc INTEGER022
EndWhile
Gosub LABEL048
AnsiPos INTEGER049, INTEGER050
STRING015 = YesChar()
Select Case (STRING003)
Case "YES"
InputYN ReadLine(STRING011, 19), STRING015, 1
Case "NO"
InputYN ReadLine(STRING011, 20), STRING015, 1
Case Else
InputYN ReadLine(STRING011, 12), STRING015, 1
End Select
INTEGER055 = GetX() + 3
If (Upper(STRING015) <> Upper(YesChar())) Then
Gosub LABEL048
Return
Endif
Gosub LABEL048
FClose -1
If (Exist(STRING039)) Goto LABEL026
If (BOOLEAN013) Log "Voting aborted (already voted in/out?)", 0
Return
:LABEL026
FOpen 1, STRING039, 2, 3
FGet 1, STRING022
If (Upper(STRING022) == "VOTIN") Then
Newline
If (BOOLEAN013) Log "NUV aborted (already voted in)", 0
FClose 1
BOOLEAN014 = 1
Gosub LABEL042
Return
Endif
If (Upper(STRING022) == "VOOUT") Then
If (BOOLEAN013) Log "NUV aborted (already voted out)", 0
FClose 1
BOOLEAN014 = 0
Gosub LABEL042
Return
Endif
If (Upper(STRING022) == "") Then
If (BOOLEAN013) Log "NUV aborted (.vot file empty?)", 0
FClose 1
Delete STRING039
Return
Endif
FClose -1
FSeek 1, 0, 0
FGet 1, INTEGER043
FGet 1, INTEGER044
Select Case (STRING003)
Case "YES"
If (BOOLEAN013) Log "nuv: voted yes", 0
Inc INTEGER043
FSeek 1, 0, 2
FPutLn 1, STRING016
FPutLn 1, "YES"
Gosub LABEL048
AnsiPos INTEGER049, INTEGER050
Print ReadLine(STRING011, 10)
INTEGER055 = GetX()
If (INTEGER006 > 0) Dec INTEGER006
Case "NO"
If (BOOLEAN013) Log "nuv: voted no", 0
Inc INTEGER044
FSeek 1, 0, 2
FPutLn 1, STRING016
FPutLn 1, "NO "
Gosub LABEL048
AnsiPos INTEGER049, INTEGER050
Print ReadLine(STRING011, 14)
INTEGER055 = GetX()
If (INTEGER006 > 0) Dec INTEGER006
Case Else
If (BOOLEAN013) Log "nuv: voted abstain", 0
FSeek 1, 0, 2
FPutLn 1, STRING016
FPutLn 1, "ABS"
Gosub LABEL048
AnsiPos INTEGER049, INTEGER050
Print ReadLine(STRING011, 6)
INTEGER055 = GetX()
FClose 1
If (INTEGER006 > 0) Dec INTEGER006
Return
End Select
FSeek 1, 0, 0
FPutLn 1, Left(String(INTEGER043), 5)
FPutLn 1, Left(String(INTEGER044), 5)
Gosub LABEL027
Return
:LABEL027
INTEGER012 = U_RecNum(Upper(STRING038))
BOOLEAN001 = 0
If (INTEGER012 == -1) Then
If (BOOLEAN013) Log "nuv: user record number for " + STRING038 + " not found", 0
BOOLEAN001 = 1
Gosub LABEL048
AnsiPos INTEGER049, INTEGER050
Print ReadLine(STRING011, 28)
INTEGER055 = GetX()
Gosub LABEL048
Endif
If (BOOLEAN001) Goto LABEL028
GetAltUser INTEGER012
If (U_Sec <> INTEGER013) Then
If (BOOLEAN013) Log "nuv: new user security is incorrect (" + String(U_Sec) + " should be " + String(INTEGER013) + ")", 0
Gosub LABEL048
AnsiPos INTEGER049, INTEGER050
Print ReadLine(STRING011, 27)
INTEGER055 = GetX()
BOOLEAN001 = 1
Endif
:LABEL028
FClose -1
If (INTEGER044 >= INTEGER036) Then
If (INTEGER036 == 0) Then
FClose 1
Gosub LABEL038
GetUser
Return
Endif
If (BOOLEAN013) Log "nuv: user " + STRING016 + " was voted OUT", 0
If (BOOLEAN001) Goto LABEL029
Select Case (INTEGER060)
Case -1
U_Sec = 0
DelUser
Case -2
Gosub LABEL049
U_Sec = 0
DelUser
Case Else
U_Sec = INTEGER060
End Select
PutUser
:LABEL029
Gosub LABEL031
FSeek 1, 0, 0
FPutLn 1, "VOOUT"
FClose 1
BOOLEAN014 = 0
BOOLEAN017 = 1
Gosub LABEL038
Gosub LABEL042
Else
If (INTEGER043 >= INTEGER035) Then
If (INTEGER035 == 0) Then
FClose 1
Gosub LABEL038
GetUser
Return
Endif
If (BOOLEAN013) Log "nuv: user " + STRING016 + " was voted IN", 0
If (BOOLEAN001) Goto LABEL030
U_Sec = INTEGER014
PutUser
:LABEL030
Gosub LABEL031
FSeek 1, 0, 0
FPutLn 1, "VOTIN"
FClose 1
BOOLEAN014 = 1
BOOLEAN016 = 1
Gosub LABEL038
Gosub LABEL042
Else
FClose 1
Gosub LABEL038
Endif
Endif
GetUser
Return
:LABEL031
FClose -1
STRING032 = PPEPath() + "work\waittmp." + String(PcbNode())
Copy STRING035, STRING032
FCreate 2, STRING035, 1, 3
INTEGER024 = 1
For INTEGER032 = 1 To INTEGER041
STRING022 = ReadLine(STRING032, INTEGER024)
If (Upper(STRING022) <> Upper(STRING038)) Then
FPutLn 2, STRING022
Inc INTEGER024
FPutLn 2, ReadLine(STRING032, INTEGER024)
Inc INTEGER024
Continue
Endif
Inc INTEGER024
Inc INTEGER024
Next
FClose 2
FClose -1
Delete STRING032
INTEGER041 = INTEGER041 - 1
FCreate 2, STRING036, 1, 3
FPutLn 2, String(INTEGER041)
FClose 2
Return
:LABEL032
STRING019 = PPEPath() + "apps\" + Replace(Left(STRING038, 8), " ", "_")
STRING019 = Replace(STRING019, "=", "-")
STRING019 = Replace(STRING019, ",", "-")
STRING019 = Replace(STRING019, ".", "-") + "."
STRING018 = PPEPath() + "forms\" + "cfg."
INTEGER025 = 9
BOOLEAN004 = 0
While (1) Do
STRING021 = ReadLine(STRING012, INTEGER025)
If (STRING021 == "") Break
INTEGER045 = STRING021
If (U_Sec >= INTEGER045) Then
If (Exist(STRING019 + String(INTEGER025 - 8))) Then
If (BOOLEAN004) Goto LABEL033
INTEGER028 = GetX()
INTEGER029 = GetY()
AnsiPos 1, 23
DefColor
SaveScrn
Cls
BOOLEAN004 = 1
:LABEL033
DispFile STRING019 + String(INTEGER025 - 8), 1 + 4
Print ""
FClose -1
AnsiPos 1, 23
Wait
Endif
Endif
Inc INTEGER025
EndWhile
If (BOOLEAN004) RestScrn
If (BOOLEAN004) Goto LABEL034
Gosub LABEL048
AnsiPos INTEGER049, INTEGER050
Print ReadLine(STRING011, 15)
INTEGER055 = GetX()
Goto LABEL035
:LABEL034
Gosub LABEL048
AnsiPos INTEGER049, INTEGER050
Print ReadLine(STRING011, 16)
INTEGER055 = GetX()
:LABEL035
AnsiPos INTEGER028, INTEGER029
FClose -1
Return
STRING028 = PPEPath() + "apps\" + Replace(Left(STRING038, 8), " ", "_")
STRING028 = Replace(STRING028, "=", "-")
STRING028 = Replace(STRING028, ",", "-")
STRING028 = Replace(STRING028, ".", "-") + ".cmt"
If (Exist(STRING028)) Then
:LABEL036
STRING015 = YesChar()
If (STRING015 == "") Then
Newline
Goto LABEL036
Endif
If (Upper(STRING015) == Upper(YesChar())) Then
Newline
StartDisp 2
DispFile STRING028, 1 + 4
StartDisp 1
Goto LABEL037
Endif
Newline
Return
Endif
:LABEL037
Return
:LABEL038
STRING015 = YesChar()
Gosub LABEL048
INTEGER064 = 1
For INTEGER022 = 1 To INTEGER052
DefColor
TSTRING008(INTEGER022) = ScrText(INTEGER053, INTEGER054 + INTEGER022 - 1, INTEGER051 + 4, 1)
AnsiPos INTEGER053, INTEGER054 + INTEGER022 - 1
Print Space(INTEGER051)
Next
STRING028 = PPEPath() + "apps\" + Replace(Left(STRING038, 8), " ", "_")
STRING028 = Replace(STRING028, "=", "-")
STRING028 = Replace(STRING028, ",", "-")
STRING028 = Replace(STRING028, ".", "-") + ".cmt"
FAppend 2, STRING028, 1, 3
If (Upper(STRING015) == Upper(YesChar())) Then
STRING013 = ""
AnsiPos INTEGER053, INTEGER054
Print ReadLine(STRING011, 7)
:LABEL039
STRING013 = ""
AnsiPos INTEGER053, INTEGER054 + INTEGER064
InputText ReadLine(STRING011, 11) + "_", STRING013, 1, INTEGER051
If ((STRING013 == "") && (INTEGER064 == 1)) Then
FClose 2
Goto LABEL041
AnsiPos INTEGER049, INTEGER050
Goto LABEL039
Endif
If (STRING013 == "") Goto LABEL040
If (INTEGER064 < 3) Then
If (INTEGER064 == 1) FPutLn 2, STRING046 + Upper(STRING016)
FPutLn 2, STRING047 + STRING013
Inc INTEGER064
Goto LABEL039
Endif
:LABEL040
If (BOOLEAN013) Log "nuv: comment entered", 0
FClose 2
AnsiPos INTEGER049, INTEGER050
Print ReadLine(STRING011, 17)
INTEGER055 = GetX()
Endif
:LABEL041
For INTEGER022 = 1 To INTEGER052
DefColor
AnsiPos INTEGER053, INTEGER054 + INTEGER022 - 1
Print TSTRING008(INTEGER022)
Next
Return
:LABEL042
FClose -1
If (BOOLEAN014) Then
Rename STRING039, PPEPath() + "APPS\IN\" + STRING041 + ".vot"
Rename PPEPath() + "apps\" + STRING041 + ".cmt", PPEPath() + "APPS\IN\" + STRING041 + ".cmt"
Else
Rename STRING039, PPEPath() + "APPS\OUT\" + STRING041 + ".vot"
Rename PPEPath() + "apps\" + STRING041 + ".cmt", PPEPath() + "APPS\OUT\" + STRING041 + ".cmt"
Endif
For INTEGER022 = 1 To INTEGER038
If (Exist(PPEPath() + "apps\" + STRING041 + "." + String(INTEGER022))) Then
If (BOOLEAN014) Then
Rename PPEPath() + "apps\" + STRING041 + "." + String(INTEGER022), PPEPath() + "apps\in\" + STRING041 + "." + String(INTEGER022)
Continue
Endif
Rename PPEPath() + "apps\" + STRING041 + "." + String(INTEGER022), PPEPath() + "apps\out\" + STRING041 + "." + String(INTEGER022)
Endif
Next
Return
:LABEL043
DefColor
GetUser
If (BOOLEAN013) Log "User (" + Upper(STRING038) + ") selected for sysop voting", 0
STRING041 = Replace(Left(STRING038, 8), " ", "_")
STRING041 = Replace(STRING041, "=", "-")
STRING041 = Replace(STRING041, ",", "-")
STRING041 = Replace(STRING041, ".", "-")
STRING039 = PPEPath() + "apps\" + Replace(Left(STRING038, 8), " ", "_")
STRING039 = Replace(STRING039, "=", "-")
STRING039 = Replace(STRING039, ",", "-")
STRING039 = Replace(STRING039, ".", "-") + ".vot"
If (U_Sec < SysopSec()) Then
AnsiPos INTEGER049, INTEGER050
Print ReadLine(STRING011, 18)
INTEGER055 = GetX()
Return
Endif
INTEGER012 = U_RecNum(Upper(STRING038))
BOOLEAN001 = 0
If (INTEGER012 == -1) Then
If (BOOLEAN013) Log "nuv: user record number for " + STRING038 + " not found", 0
Gosub LABEL048
AnsiPos INTEGER049, INTEGER050
Print ReadLine(STRING011, 28)
INTEGER055 = GetX()
Delay 40
BOOLEAN001 = 1
Gosub LABEL048
Endif
If (BOOLEAN001) Goto LABEL044
GetAltUser INTEGER012
If (U_Sec <> INTEGER013) Then
If (BOOLEAN013) Log "nuv: new user security is incorrect (" + String(U_Sec) + " should be " + String(INTEGER013) + ")", 0
Gosub LABEL048
AnsiPos INTEGER049, INTEGER050
Print ReadLine(STRING011, 27)
INTEGER055 = GetX()
Delay 40
Gosub LABEL048
BOOLEAN001 = 1
Endif
:LABEL044
FOpen 1, STRING039, 2, 3
If (Ferr(1)) Then
Gosub LABEL048
AnsiPos INTEGER049, INTEGER050
Print "ERROR openinig vote file (already open?), try again later"
INTEGER055 = GetX()
GetUser
Return
Endif
STRING015 = "A"
AnsiPos INTEGER049, INTEGER050
InputStr ReadLine(STRING011, 21), STRING015, 1, 1, "AIO", 8 + 2
INTEGER055 = GetX() + 5
Gosub LABEL048
Select Case (STRING015)
Case "", "A"
FClose 1
Case "I"
If (BOOLEAN013) Log "nuv: user " + STRING016 + " voted IN by SYSOP", 0
If (BOOLEAN001) Goto LABEL045
U_Sec = INTEGER014
PutUser
:LABEL045
Gosub LABEL031
FSeek 1, 0, 0
FPutLn 1, "SYSOP"
FClose 1
BOOLEAN014 = 1
BOOLEAN016 = 1
Gosub LABEL042
Case "O"
If (BOOLEAN013) Log "nuv: user " + STRING016 + " voted OUT by SYSOP", 0
Gosub LABEL031
If (BOOLEAN001) Goto LABEL047
If (INTEGER060 == -1) Then
U_Sec = 0
DelUser
Goto LABEL046
Endif
If (INTEGER060 == -2) Then
Gosub LABEL049
U_Sec = 0
DelUser
Goto LABEL046
Endif
U_Sec = INTEGER060
:LABEL046
PutUser
:LABEL047
FSeek 1, 0, 0
FPutLn 1, "SYSOP"
FClose 1
BOOLEAN014 = 0
BOOLEAN017 = 1
Gosub LABEL042
End Select
FClose 1
GetUser
Return
Return
:LABEL048
DefColor
AnsiPos INTEGER049, INTEGER050
Print Space(INTEGER055 - INTEGER049 + 1)
Return
:LABEL049
FClose -1
STRING054 = PPEPath() + "work\nuvun" + String(PcbNode())
STRING055 = PPEPath() + "unwanted"
FOpen 3, STRING054, 1, 3
FOpen 4, STRING055, 0, 0
FPutLn 3, U_Name()
While (1) Do
FGet 4, STRING056
If (Ferr(4)) Break
FPutLn 3, STRING056
EndWhile
FClose 3
FClose 4
Delete STRING055
Copy STRING054, STRING055
Delete STRING054
Return
:LABEL050
STRING057 = PPEPath() + "apply.vip"
INTEGER065 = 1
STRING058 = ReadLine(STRING057, INTEGER065)
While (STRING058 <> "") Do
If (Upper(U_Name()) == Upper(STRING058)) Then
If (BOOLEAN013) Log "User found in VIP file, automatic validation", 0
DispFile PPEPath() + "graph\nuvvip", 1 + 4
Wait
U_Sec = INTEGER014
PutUser
End
Endif
Inc INTEGER065
STRING058 = ReadLine(STRING057, INTEGER065)
EndWhile
Return
AnsiPos INTEGER049, INTEGER050
STRING015 = Upper(YesChar())
InputYN ReadLine(STRING011, 12), STRING015, 1
INTEGER055 = GetX() + 2
Gosub LABEL048
Return
;------------------------------------------------------------------------------
;
; Usage report (before postprocessing)
;
; ■ Statements used :
;
; 16 End
; 6 Cls
; 12 Wait
; 2 Color
; 308 Goto
; 377 Let
; 59 Print
; 10 PrintLn
; 229 If
; 10 DispFile
; 7 FCreate
; 4 FOpen
; 2 FAppend
; 46 FClose
; 4 FGet
; 30 FPutLn
; 7 StartDisp
; 3 Hangup
; 7 GetUser
; 5 PutUser
; 13 DefColor
; 4 Delete
; 4 DelUser
; 32 Log
; 1 InputStr
; 5 InputYN
; 52 Gosub
; 33 Return
; 3 Delay
; 27 Inc
; 4 Dec
; 6 Newline
; 5 Tokenize
; 1 InputText
; 71 AnsiPos
; 3 FreshLine
; 3 SaveScrn
; 3 RestScrn
; 2 MPrint
; 6 Rename
; 9 FSeek
; 1 Redim
; 2 Copy
; 2 GetAltUser
;
;
; ■ Functions used :
;
; 27 -
; 9 *
; 12 %
; 241 +
; 52 -
; 105 ==
; 16 <>
; 18 <
; 17 <=
; 9 >
; 36 >=
; 172 !
; 31 &&
; 28 ||
; 1 Len(
; 5 Lower()
; 46 Upper()
; 34 Left()
; 5 Space()
; 2 Ferr()
; 4 Chr()
; 7 Asc()
; 4 Random()
; 3 Time()
; 4 U_Name()
; 3 NoChar()
; 10 YesChar()
; 11 StripAtx()
; 45 Replace()
; 2 Inkey()
; 46 String()
; 1 PCBDat()
; 46 PPEPath()
; 4 PcbNode()
; 95 ReadLine()
; 1 SysopSec()
; 46 GetToken()
; 16 Exist()
; 6 LangExt()
; 1 AnsiOn()
; 26 GetX()
; 8 GetY()
; 2 DefColor()
; 2 LoggedOn()
; 1 TokCount()
; 2 U_RecNum()
; 2 ScrText()
; 18 ReplaceStr()
; 1 ToInteger()
; 14 Mixed()
;
;------------------------------------------------------------------------------
;
; Analysis flags : WRDBMds
;
; W - Write user ■ 5
; Program writes a user record. Although this may be normal for a
; User Editor, it may also be a way to modify an account level.
; ■ Search for : PUTUSER
;
; R - Read user ■ 5
; User records are read, this may signify that someone wants to get
; various informations about a user (for example his password), but
; this may also be normal for a program accessing user records (for
; example a User Editor)
; ■ Search for : GETALTUSER
;
; D - Delete user ■ 5
; Program is deleting account(s)... Check!
; ■ Search for : DELUSER
;
; B - Brute hangup ■ 1
; Program hangup without notification. This may be a good way to
; disconnect a user, but if used randomly, may be very nasty
; ■ Search for : HANGUP, DTROFF
;
; M - Send text to modem only ■ 4
; Some informations are sent only to the modem, not to the local
; screen, this is a well known way to make stealth backdoors, Check!
; ■ Search for : SENDMODEM, MPRINT, MPRINTLN
;
; d - Access PCBOARD.DAT ■ 2
; Program gets the full pathname to PCBOARD.DAT, this may be usefull
; for many PPE so they can find various informations on the system
; (system paths, max number of lines in messages, ...) but it may also
; be a way to gather vital informations.
; ■ Search for : PCBDAT()
;
; s - Sysop level access ■ 5
; Program is reading the sysop access level, this may be normal
; but still it is very suspect. It is the best way to give a user
; all priviledges. Check!
; ■ Search for : SYSOPSEC()
;
;------------------------------------------------------------------------------
;
; Postprocessing report
;
; 14 For/Next
; 8 While/EndWhile
; 106 If/Then or If/Then/Else
; 6 Select Case
;
;------------------------------------------------------------------------------
; AEGiS Corp - Break the routines, code against the machines!
;------------------------------------------------------------------------------